﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SD.App.Desktop.Model
{
    /// <summary>
    /// 用户注册参数 DTO
    /// </summary>
    public class RegisterDto
    {
        /// <summary>
        /// 用户名（必填，3-20 位，仅支持字母、数字、下划线）
        /// </summary>
        [Required(ErrorMessage = "用户名不能为空")]
        [RegularExpression(@"^[a-zA-Z0-9_]{3,20}$", ErrorMessage = "用户名仅支持字母、数字、下划线，长度 3-20 位")]
        public string Username { get; set; } = string.Empty;

        /// <summary>
        /// 明文密码（必填，6-20 位，含大小写字母、数字、特殊字符中至少两种）
        /// </summary>
        [Required(ErrorMessage = "密码不能为空")]
        [StringLength(20, MinimumLength = 6, ErrorMessage = "密码长度 6-20 位")]
        public string Password { get; set; } = string.Empty;

        /// <summary>
        /// 确认密码（必填，需与密码一致）
        /// </summary>
        [Required(ErrorMessage = "请确认密码")]
        public string ConfirmPassword { get; set; } = string.Empty;

        /// <summary>
        /// 邮箱（可选，用于密码重置）
        /// </summary>
        [EmailAddress(ErrorMessage = "邮箱格式不正确")]
        public string? Email { get; set; }

        /// <summary>
        /// 手机号（可选，AES 加密存储）
        /// </summary>
        [RegularExpression(@"^1[3-9]\d{9}$", ErrorMessage = "手机号格式不正确")]
        public string? Phone { get; set; }
    }
}
